package com.Enumeration枚举类;

/**
 * 作    者 ：吾路巴尼
 * 创建时间 ：2025-02-19:52
 */
public class enum枚举的实现_自定义枚举 {
    /**
     * 枚举的两种是想方式：
     * 1.自定义类实现枚举：
     * 2.使用enum 关键字，实现枚举
     */
    public static void main(String[] args) {
        System.out.println(Season01.AUTUMN.getDesc());  //直接用类名访问对象；
//        System.out.println(Season01.num);

    }
}
/**1.自定义类实现枚举：*/
class Season01{
    /**
     * 1.把set方法去除，防止被修改
     * 2.私有化构造器，防止外部创建对象
     * 3.在类内部提供当前枚举类的多个对象，多个对象通过public static final修饰 ，static 和 final修饰，优化运行效率，不会导致类加载；
     * 4.对象 加 final：保证了 SPRING 的不可变性，增强了代码的安全性和可读性
     */
    private String name;
    private String desc;
/** 加static的原因：可以在其他类中不用创建对象而直接用类名访问即可  加final 的原因是保证了对象引用的不可变性   static+final不会导致类加载*/
    public static final Season01 SPRING = new Season01("春天","春暖花开");
    public static final Season01 SUMMER = new Season01("夏天","夏日炎炎");
    public static final Season01 AUTUMN = new Season01("秋天","秋高气爽");
    public static final Season01 WINTER = new Season01("冬天","冰天雪地");
    public static  final  int num = 10;

    private Season01(String name,String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

}
